I'm Tomu!!
積み基くずし第1話
https://gyazo.com/7543349ff47b6dd95c3dff6ac767244b
I'm 610t!!
むとうたけし(武藤武士): 専業主夫(52歳)@奈良
610t
https://gyazo.com/7f02335bd729eddd0d02610251ad6ab4
むとうたけし(武藤武士)
専業主夫(52歳)@奈良
所属コミュニティ
アカウント一覧
積み基くずしとは?
https://gyazo.com/39afedcf3db1f1832d330d4529f87c70
積みボード(基板)を使っていこうという取り組み
Tomuってなに?
https://gyazo.com/b75d68f33da016aaa25b038d2eb5a444
特徴
基本的に子だくさん
サイズ感: USB A端子にシンデレラフィット!!
プラスチックの部品無くすと使えない
年度末セールの時に買ったので、1760円
高いし、FPGA使える気がせん(^-^;)
作者の作った動機
2段階認証用ハードウェアキーが$50と高かった
じゃあ、安価に作ってみんべ
仕様
CPU: Silicon Labs Happy Gecko EFM32HG309 (ARM Cortex-M0+)
クロック: 25 MHz
RAM: 8 KB
ストレージ: 64 KB フラッシュ
接続:USB 2.0 FS; USBデバイスとして動作可能
キーボード、マウス、ストレージ、シリアルなどなど
I/O
静電容量スイッチ: 2
LED: 2 (赤 + 緑)
構成: 12個の部品(PCBとプラスティック部品含む)
https://gyazo.com/992647fc19e09ff288c9b8ad4a7c76d9
DFU形式で用意されているダウンロードするだけのサンプル
自分でビルドできるサンプル
DFU形式のプログラム書込; WebUSB + USB DFU
DFU(Device Firmare Update)ファイルのアップロードがWebブラウザ(Chrome)で可能
WebUSBを使ってホストUSB DFU(Javascrpit)を提供
Tomuをつなぐと、こんな通知が
https://gyazo.com/341858f58b0a26d47fefedb031f580e8
https://gyazo.com/d9fb8dc95ccdf022098d87e7733c704b
Connectボタンを押すと、候補が現れるので、"Tomu Bootloader"を選ぶ
https://gyazo.com/357b7b48792ec8bf61b4c00c58633f80
あとは、"Firmware Download (write to USB device)"でアップロードするDFUファイルを指定して、"Download"ボタンを押すだけ
一度書き込んだ後で、再度DFUモードに入るには、Tomuを一度抜いてから再度刺せばOK
コードを永続化するにはどうするの?
DFUサンプルプログラム
bare-minimum.dfu: Tomuで利用できる最小限のコードで何もしない
miniblink.dfu: 赤と緑のLEDの交互点滅
usb-cdcacm.dfu: 赤LEDを点滅し、その度にシリアルに"toggling LED"を表示
usb-hid.dfu: USBマウス
動作はx軸方向に30 pixel左右にふり続けるので、スクリーンセーバーセーバーになる
usb-msc.dfu: USBマスストレージクラスで、RAMDISKという名前でディスクを作成
https://gyazo.com/80d2b62aa395dfb21132ffbfb5ab5a92
cbmbasic.dfu: Commodore BASIC シミュレータ
code:basic
% sudo cu -l /dev/cu.usbmodemC61 -s 115200
**** COMMODORE 64 BASIC V2 ****
64K RAM SYSTEM 6380 BASIC BYTES FREE
READY.
LIST
10 REM SIEVE (エラトステネスのふるい)
20 FORI=1TO120000
30 FORJ=2TOSQR(I)
40 IFI/J=INT(I/J)GOTO70
50 NEXTJ
60 PRINTI;
70 NEXTI
READY.
RUN
1 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229 233 239 241 251 257 263 269 271 277 281 283 293 307 311 313 317 331 337 347 349 353 359 367 373 379 383 389 397 401 409 419 421 431 433 439 443 449 457 461 463 467 479 487 491 499 503 509 521 523 541 547 557 563 569
(snip)
pwm-shell.dfu: シェルコマンドでLEDを制御
code:txt
% sudo cu -l /dev/cu.usbmodemLED_PW1 -s 115200
Enter command, followed by Return:
CMD> h
Supported commands: <H,T,D,E,P,S,G,R>
Print help message: <H>
Advance both LEDs to their next test mode: <T>
Disable/Enable debug printout: <D><0,1>
Disable/Enable serial shell echo: <E><0,1>
Print current configuration of the Green/Red LED: <P><G,R>
Set Green/Red LED config: <G,R><T,N,X,L,U,H,D,P>
以下は、動作が未確認
光を使って情報を伝える仕組らしい
usb-audiostream.dfu: オーディオのデモっぽいけど…
https://gyazo.com/26dd152f0f0610d344af83db8609723f
usb-midi.dfu: コレもMIDI?
usb-synth.dfu: USB MIDIとして使えるのかも
サウンド入力としては見える
https://gyazo.com/08c850275bfb02c34d8c9c5a52dfbe4c
自分でビルドするサンプル
特に面白いものだけ
usb-hid-keyboard:USBキーボードとして動作
captouch: 静電容量スイッチの状況をシリアルに出力
code:shell
% sudo cu -l /dev/cu.usbmodem70mu_5p1 -s 115200
Measuring...
Measurement generation 55343
Channel 0: 0x00000000 Max: 0x00000001
Average: 0
Channel 1: 0x00000000 Max: 0x000006d7
Average: 67
Channel 2: 0x00000000 Max: 0x00000946
Average: 48
Channel 3: 0x00000000 Max: 0x00000750
Average: 20
開発環境整える(macOS)
macOSの場合
2. PATHに/Applications/ARM/bin/を追加する
3. ソースのあるディレクトリでmake
code:shell
% export PATH=${PATH}:/Applications/ARM/bin/
% pwd
/Users/mutoh/work/github/tomu-quickstart/bare-minimum
% make
CC main.c main.o
LD bare-minimum.elf
OBJCOPY bare-minimum.bin
IHEX bare-minimum.ihex
DFU bare-minimum.dfu
dfu-suffix (dfu-util) 0.10
Copyright 2011-2012 Stefan Schmidt, 2013-2020 Tormod Volden
This program is Free Software and has ABSOLUTELY NO WARRANTY
Suffix successfully added to file
Gainer
https://gyazo.com/04def59faf254ee1e7cd7209a944b744
Physical Programing環境
アート系作品などに使用
多彩な対応言語
シリアル経由のコマンド操作なので多くの言語で利用可能
センサーやアクチュエータの入出力に特化されており、処理にはPCが必要
PCからインターネットすればIoT可能
プログラマブルなピン設定
PSoC使用のため比較的自由に入出力のモードが切り替え可能
シリアル経由のプロトコル
表は今回実装したコマンド
table:command
コマンド 返値 意味
Q* Q* リセット
?* ?1.0.0.00* バージョン確認
KONFIGURATION_1* KONFIGURATION_1* モード設定
h* h* 内蔵LEDオン
l* l* 内蔵LEDオフ
i* i* (i00ABCDEF*) 連続アナログ入力モード
E* E* 連続アナログ入力モード終了
オープンハードウエアなので互換機あり
オリジナルGainer
Squeak+Gainerhttps://gyazo.com/a443db4eee6e7b13be3e9ffd55465324
むとうの昔のSqueak+Gainer関係報告
TomuGainer
https://gyazo.com/86e3a2194e1c5adfc8430f5afe4fcb7b
供養のために、なんか作ってみるべ
TomuとGainer組み合わせたら面白くね?
TomuGainer作ったよ!!
Squeak+Gainer with Tomu USBでできること & デモ動画
Tomu内蔵LEDのオンオフ
Gainerのboard LED←はい/いいえ
Tomuの静電容量スイッチからアナログ入力1,2として、Squeakに入力
GainerのAnalogInput01
GainerのAnalogInput02
Tomuから乱数をアナログ入力0として、Squeakに入力
GainerのAnalogInput00
https://youtu.be/tawCjW_MHQw
https://gyazo.com/72e548a29bbab4152a46bc20d18609cb
おわりに
とりあえず、Tomu USBの供養はできた(か?)
伏線回収 or アンサーソング?
当日の情報へのリンク
https://www.youtube.com/watch?v=qV7v2eFEBmM&t=4083